Run Comparison Wizard using DXL

Hi,

Is there any dxl script\ keyword to run the Comparison wizard for comparing modules?
DXLScripter - Fri Aug 24 07:35:03 EDT 2012

Re: Run Comparison Wizard using DXL
DXLScripter - Wed Sep 05 05:34:38 EDT 2012

Can anyone please answer this question.

I tried with the below dxl but this is running as independent dxl. Since I want to perform some actions on clicking finish of comparison wizard, this will not be fine.

eval_("#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>"

Moroever I want to edit some configurations in the comparison wizard like uncheck the checkbox of filter etc. Is there any way I can configure this prior to running the wizard

Re: Run Comparison Wizard using DXL
Mathias Mamsch - Wed Sep 05 06:39:42 EDT 2012

DXLScripter - Wed Sep 05 05:34:38 EDT 2012
Can anyone please answer this question.

I tried with the below dxl but this is running as independent dxl. Since I want to perform some actions on clicking finish of comparison wizard, this will not be fine.

eval_("#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>"

Moroever I want to edit some configurations in the comparison wizard like uncheck the checkbox of filter etc. Is there any way I can configure this prior to running the wizard

See here:

https://www.ibm.com/developerworks/forums/thread.jspa?messageID=14870985&#14870985

If you want to modify stuff in the dialog, then you would need to do:
 

eval_("
DB myDialog = null
 
// we replace show by realize, this way the execution will continue after the include
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only 
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>
 
// Now after the include the dialog is realized, we can change our settings
set (<DBE option>, <Value>
 
// Now show it...
showOld myDialog // show the dialog now... 
")

 


Hope this helps, regards, Mathias

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

Re: Run Comparison Wizard using DXL
DXLScripter - Wed Sep 05 07:40:18 EDT 2012

Mathias Mamsch - Wed Sep 05 06:39:42 EDT 2012

See here:

https://www.ibm.com/developerworks/forums/thread.jspa?messageID=14870985&#14870985

If you want to modify stuff in the dialog, then you would need to do:
 

eval_("
DB myDialog = null
 
// we replace show by realize, this way the execution will continue after the include
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only 
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>
 
// Now after the include the dialog is realized, we can change our settings
set (<DBE option>, <Value>
 
// Now show it...
showOld myDialog // show the dialog now... 
")

 


Hope this helps, regards, Mathias

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

I am sorry, I have not given any clarity on my question.
Requirement is that I have to run the comparison wizard with 'Filter modules to show unmatched objects' checkbox unchecked. Also once user press Finish button of the wizard it should excecute another dxl say myDxl.dxl. This myDxl.dxl script also requires info about the Older module which the newer module is compared with.
Attachments

attachment_14883028_CompareModule_Config.bmp

Re: Run Comparison Wizard using DXL
Mathias Mamsch - Wed Sep 05 18:21:55 EDT 2012

DXLScripter - Wed Sep 05 07:40:18 EDT 2012
I am sorry, I have not given any clarity on my question.
Requirement is that I have to run the comparison wizard with 'Filter modules to show unmatched objects' checkbox unchecked. Also once user press Finish button of the wizard it should excecute another dxl say myDxl.dxl. This myDxl.dxl script also requires info about the Older module which the newer module is compared with.

I think I understood ... If you read the post I referenced, half of your problem will be solved, namely, being able to not run the comparison wizard as an independent script, but launching it, waiting for it to end, and continuing your DXL. For the other half, namely the setting of the options I showed you in this post how to accomplish this. You need to override show, to do realize instead inside the eval. Then you need to set the options that you want. Then you need to call block (not show, if you want your script to continue afterwards). For both things to work you need to combine the two approaches. Hope this helps, regards, Mathias

Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

Re: Run Comparison Wizard using DXL
DXLScripter - Thu Sep 06 03:39:29 EDT 2012

Mathias Mamsch - Wed Sep 05 18:21:55 EDT 2012
I think I understood ... If you read the post I referenced, half of your problem will be solved, namely, being able to not run the comparison wizard as an independent script, but launching it, waiting for it to end, and continuing your DXL. For the other half, namely the setting of the options I showed you in this post how to accomplish this. You need to override show, to do realize instead inside the eval. Then you need to set the options that you want. Then you need to call block (not show, if you want your script to continue afterwards). For both things to work you need to combine the two approaches. Hope this helps, regards, Mathias


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

I am afraid the understanding is not right.
When I run myDxl.dxl script this should invoke the comparison wizard DXL not as an independent script but in the context of myDxl.dxl script and return back to the dxl code after the eval_ comparison wizard call. I tried the below code but this is making all other DOORS pgm insensitive cos of block keyword.

print "Running comp wiz dxl from myDxl"
eval_("
DB myDialog = null

void blockDlg (DB x) { block x }
void releaseDlg (DB x) { release x}

void show (DB x) { myDialog = x; show x }
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>

//set (<DBE option>, <Value>

blockDlg myDialog
releaseDlg myDialog

")
print "Finished running comp wiz dxl. Back to myDxl"
For setting the DBE this is not possible as all the compwiz dxl scripts are encrypted except usercallouts.dxl and wizard.inc

Re: Run Comparison Wizard using DXL
Mathias Mamsch - Thu Sep 06 04:36:53 EDT 2012

DXLScripter - Thu Sep 06 03:39:29 EDT 2012
I am afraid the understanding is not right.
When I run myDxl.dxl script this should invoke the comparison wizard DXL not as an independent script but in the context of myDxl.dxl script and return back to the dxl code after the eval_ comparison wizard call. I tried the below code but this is making all other DOORS pgm insensitive cos of block keyword.

print "Running comp wiz dxl from myDxl"
eval_("
DB myDialog = null

void blockDlg (DB x) { block x }
void releaseDlg (DB x) { release x}

void show (DB x) { myDialog = x; show x }
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>

//set (<DBE option>, <Value>

blockDlg myDialog
releaseDlg myDialog

")
print "Finished running comp wiz dxl. Back to myDxl"


For setting the DBE this is not possible as all the compwiz dxl scripts are encrypted except usercallouts.dxl and wizard.inc

Well I thought from reading the two posts, you could figure out, how to do this, but I guess its a little complicated. The DXL comparison wizard is using 'show' to show the dialog and 'hide' to hide the dialog. We can now defer the show, by overriding show with realize. This will make the comparison wizard run over the show and continue with our eval script.
 

void showOld (DB x) { show x }
void show (DB x) { realize x } // make show use realize only

 


Good. Now after we do our include we could do showOld, but we want to use block, so we can wait for execution. But block needs a release (see the other post!!). Therefore when the original comparison wizard does 'hide' it now does need to do 'release; hide'. Therefore we also do:

 

 

 

void hideOld (DB x) { hide x }
void hide (DB x) { release x; hide x}



Then we need to set the options in the dialog. For this we need a handle to the dialog. We could use the global variable from the comparison wizard in case it exists, but sometimes code does this:



 

 

 

DBE el1, el2 
 
void makeGUI () {
   DB diag = ...
   el1 = ...
   show diag
}



So in a case like this the dialog handle is not a global, but we can use another trick to get it. In our redefinition of show, we just save the handle.



 

 

 

DB myDialog = null; 
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only, save the handle



You can also use this trick to get a handle on single dialog elements, that are not exposed through a global variable. Just hook the DBE creation function, compare the parameters to see if you got the right element, then store the handle. Alright. Now we need the name of the global options DBE variables. For the toggle "Filter modules to show unmatched objects" the DBE var is called 'filterOpt'.
So now lets put that together:



 

 

 

 

eval_("
DB myDialog = null; 
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only, save the handle
 
void hideOld (DB x) { hide x }
void hide (DB x) { release x; hide x}
 
// note that lib/dxl is a standard addin path and you do not need double forward slashes
#include <standard/compwizard/compwiz.dxl>
 
 
// Now after the include the dialog is realized, we can change our settings
set (filterOpt, false)
 
// Now show it...
block myDialog // show the dialog now... 
 
// You can read stuff from the dialog here. It might be necessary to not hide the 
// dialog, so you would only call release in the hide(...) function. 
 
destroy myDialog
 
ack \"Finished, doing more stuff!\"
")



So "impossible" is really something that is a very flexible thing in DXL. If you need more info on the DBE variables, then just post. You can do a lot of dirty tricks, even with encrypted DXL. You can turn on tracing or get to the names of the elements or use DXL error messages to do so.



 

 

 

 

deleteFile "C:/temp/trace.txt"
startDXLTracing_ "C:/temp/trace.txt"
#include <standard/compwizard/compwiz.dxl>
stopDXLTracing_



So this will dump all the variable names right in the file. With a bit of fantasy you can find the right ones. There are also other possibilities to get to the variable names. So if you are looking for your specific toggle you can do:



 

 

 

 

DBE toggle (DB x, string s, bool v) { 
   int d1,d2
   // lets look for a toggle that contains the word 'filter'
   if (findPlainText(s, "filter", d1, d2, false)) { return addr_ 1337 }
}
 
deleteFile "C:/temp/trace.txt"
startDXLTracing_ "C:/temp/trace.txt"
#include <standard/compwizard/compwiz.dxl>



Returning a null DBE makes the If you now look at the trace.txt file, you will find the variable name of the GUI element probably right on the bottom.

Regards, Mathias



 

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

Re: Run Comparison Wizard using DXL
Mathias Mamsch - Mon Sep 10 05:34:12 EDT 2012

Mathias Mamsch - Thu Sep 06 04:36:53 EDT 2012

Well I thought from reading the two posts, you could figure out, how to do this, but I guess its a little complicated. The DXL comparison wizard is using 'show' to show the dialog and 'hide' to hide the dialog. We can now defer the show, by overriding show with realize. This will make the comparison wizard run over the show and continue with our eval script.
 

void showOld (DB x) { show x }
void show (DB x) { realize x } // make show use realize only

 


Good. Now after we do our include we could do showOld, but we want to use block, so we can wait for execution. But block needs a release (see the other post!!). Therefore when the original comparison wizard does 'hide' it now does need to do 'release; hide'. Therefore we also do:

 

 

 

void hideOld (DB x) { hide x }
void hide (DB x) { release x; hide x}



Then we need to set the options in the dialog. For this we need a handle to the dialog. We could use the global variable from the comparison wizard in case it exists, but sometimes code does this:



 

 

 

DBE el1, el2 
 
void makeGUI () {
   DB diag = ...
   el1 = ...
   show diag
}



So in a case like this the dialog handle is not a global, but we can use another trick to get it. In our redefinition of show, we just save the handle.



 

 

 

DB myDialog = null; 
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only, save the handle



You can also use this trick to get a handle on single dialog elements, that are not exposed through a global variable. Just hook the DBE creation function, compare the parameters to see if you got the right element, then store the handle. Alright. Now we need the name of the global options DBE variables. For the toggle "Filter modules to show unmatched objects" the DBE var is called 'filterOpt'.
So now lets put that together:



 

 

 

 

eval_("
DB myDialog = null; 
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only, save the handle
 
void hideOld (DB x) { hide x }
void hide (DB x) { release x; hide x}
 
// note that lib/dxl is a standard addin path and you do not need double forward slashes
#include <standard/compwizard/compwiz.dxl>
 
 
// Now after the include the dialog is realized, we can change our settings
set (filterOpt, false)
 
// Now show it...
block myDialog // show the dialog now... 
 
// You can read stuff from the dialog here. It might be necessary to not hide the 
// dialog, so you would only call release in the hide(...) function. 
 
destroy myDialog
 
ack \"Finished, doing more stuff!\"
")



So "impossible" is really something that is a very flexible thing in DXL. If you need more info on the DBE variables, then just post. You can do a lot of dirty tricks, even with encrypted DXL. You can turn on tracing or get to the names of the elements or use DXL error messages to do so.



 

 

 

 

deleteFile "C:/temp/trace.txt"
startDXLTracing_ "C:/temp/trace.txt"
#include <standard/compwizard/compwiz.dxl>
stopDXLTracing_



So this will dump all the variable names right in the file. With a bit of fantasy you can find the right ones. There are also other possibilities to get to the variable names. So if you are looking for your specific toggle you can do:



 

 

 

 

DBE toggle (DB x, string s, bool v) { 
   int d1,d2
   // lets look for a toggle that contains the word 'filter'
   if (findPlainText(s, "filter", d1, d2, false)) { return addr_ 1337 }
}
 
deleteFile "C:/temp/trace.txt"
startDXLTracing_ "C:/temp/trace.txt"
#include <standard/compwizard/compwiz.dxl>



Returning a null DBE makes the If you now look at the trace.txt file, you will find the variable name of the GUI element probably right on the bottom.

Regards, Mathias



 

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

By the way, there is a typo:
 

...
void hideOld (DB x) { hide x }
void hide (DB x) { release x; hideOld x} // not hide!
...

 


Wonder why it still worked when I tested it. Regards, Mathias

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

Re: Run Comparison Wizard using DXL
DXLScripter - Fri Sep 21 05:40:34 EDT 2012

Mathias Mamsch - Mon Sep 10 05:34:12 EDT 2012

By the way, there is a typo:
 

...
void hideOld (DB x) { hide x }
void hide (DB x) { release x; hideOld x} // not hide!
...

 


Wonder why it still worked when I tested it. Regards, Mathias

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

The comparison wizard consist of 6 dialog box. Excecuting the below code will exit the eval and print "Comp wizard finished running" when the next button of the first dialogbox is pressed. I tried to run trace to get the DB for the wizard so that I could assign myDialog = {Desired DialogBox of wizard} but I could not get it working. Pls help.

##############################################################################
eval_("
DB myDialog = null

// we replace show by realize, this way the execution will continue after the include

void blockDlg (DB x) { block x }

void hideOld (DB x) { hide x }
void hide (DB x) { release x; hideOld x}

void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>

// Now after the include the dialog is realized, we can change our settings
//set (<DBE option>, <Value>

// Now show it...
blockDlg myDialog // show the dialog now...
showOld myDialog

")
print "Comp wizard finished running"
##############################################################################

Re: Run Comparison Wizard using DXL
DXLScripter - Mon Sep 24 05:43:11 EDT 2012

DXLScripter - Fri Sep 21 05:40:34 EDT 2012
The comparison wizard consist of 6 dialog box. Excecuting the below code will exit the eval and print "Comp wizard finished running" when the next button of the first dialogbox is pressed. I tried to run trace to get the DB for the wizard so that I could assign myDialog = {Desired DialogBox of wizard} but I could not get it working. Pls help.

##############################################################################
eval_("
DB myDialog = null

// we replace show by realize, this way the execution will continue after the include

void blockDlg (DB x) { block x }

void hideOld (DB x) { hide x }
void hide (DB x) { release x; hideOld x}

void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>

// Now after the include the dialog is realized, we can change our settings
//set (<DBE option>, <Value>

// Now show it...
blockDlg myDialog // show the dialog now...
showOld myDialog

")
print "Comp wizard finished running"
##############################################################################

Could you please help me sort out the issue.

In my dxl script I want to invoke the ComparisonWizard. Compwizard has 6 Dialogbox, I want all 6 DB to be excecuted and on clicking Finish I should continue with my dxl script.

eval_("
DB myDialog = null

// we replace show by realize, this way the execution will continue after the include

void blockDlg (DB x) { block x }

void hideOld (DB x) { hide x }
void hide (DB x) { release x; hideOld x}

void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>

// Now after the include the dialog is realized, we can change our settings
//set (<DBE option>, <Value>

// Now show it...
blockDlg myDialog // show the dialog now...
showOld myDialog

")

if(showing(....."DialogBox 6 handle"))
{
print "Comp wizard finished running"
}

Re: Run Comparison Wizard using DXL
Mathias Mamsch - Wed Sep 26 15:34:19 EDT 2012

DXLScripter - Mon Sep 24 05:43:11 EDT 2012
Could you please help me sort out the issue.

In my dxl script I want to invoke the ComparisonWizard. Compwizard has 6 Dialogbox, I want all 6 DB to be excecuted and on clicking Finish I should continue with my dxl script.

eval_("
DB myDialog = null

// we replace show by realize, this way the execution will continue after the include

void blockDlg (DB x) { block x }

void hideOld (DB x) { hide x }
void hide (DB x) { release x; hideOld x}

void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only
#include <C://Program Files//Telelogic//DOORS_8.3//lib//dxl//standard//compwizard//compwiz.dxl>

// Now after the include the dialog is realized, we can change our settings
//set (<DBE option>, <Value>

// Now show it...
blockDlg myDialog // show the dialog now...
showOld myDialog

")

if(showing(....."DialogBox 6 handle"))
{
print "Comp wizard finished running"
}

You are right. I did not test clicking on the next button. The problem is, that the stupid comparison wizard does
 

hide dialog 
...
show dialog
...

 


after switching each page. With our current callbacks this will trigger a release, and therefore jump out the block. So we need to track the visibility of the dialog and reblock it until it is finally really hidden. This works for me:

 

 

 

Module modCur = current 
 
if (null modCur) {
   error "You need to have a current Module!"
   halt
}
 
eval_("
DB myDialog = null; 
 
bool bDialogShown = false
 
// we track showing the dialog with realize and show now. bDialogShown will then be true. 
void realizeOld (DB x) { realize x }
void realize (DB x) { 
   bDialogShown = true
   realizeOld x
}
 
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only, save the handle
 
void hideOld (DB x) { hide x }
void hide (DB x) { release x; bDialogShown = false; hideOld x}
 
// note that lib/dxl is a standard addin path and you do not need double forward slashes
#include <standard/compwizard/compwiz.dxl>
 
 
// Now after the include the dialog is realized, we can change our settings
set (filterOpt, false)
 
// Now block it as long as it is visible. 
while (true) {
  block myDialog // show the dialog now... 
  // if the dialog does hide/show or hide/realize now, then 
  // bDialogShown will be true, otherwise it will be false 
  // if the dialog has been hidden 
  if (!bDialogShown)  break
}
 
// You can read stuff from the dialog here. It might be necessary to not hide the 
// dialog, so you would only call release in the hide(...) function. 
 
destroy myDialog
")
 
ack "Finished Dialog!"



Hope this helps, regards, Mathias



 

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

Re: Run Comparison Wizard using DXL
DXLScripter - Fri Sep 28 05:48:04 EDT 2012

Mathias Mamsch - Wed Sep 26 15:34:19 EDT 2012

You are right. I did not test clicking on the next button. The problem is, that the stupid comparison wizard does
 

hide dialog 
...
show dialog
...

 


after switching each page. With our current callbacks this will trigger a release, and therefore jump out the block. So we need to track the visibility of the dialog and reblock it until it is finally really hidden. This works for me:

 

 

 

Module modCur = current 
 
if (null modCur) {
   error "You need to have a current Module!"
   halt
}
 
eval_("
DB myDialog = null; 
 
bool bDialogShown = false
 
// we track showing the dialog with realize and show now. bDialogShown will then be true. 
void realizeOld (DB x) { realize x }
void realize (DB x) { 
   bDialogShown = true
   realizeOld x
}
 
void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x } // make show use realize only, save the handle
 
void hideOld (DB x) { hide x }
void hide (DB x) { release x; bDialogShown = false; hideOld x}
 
// note that lib/dxl is a standard addin path and you do not need double forward slashes
#include <standard/compwizard/compwiz.dxl>
 
 
// Now after the include the dialog is realized, we can change our settings
set (filterOpt, false)
 
// Now block it as long as it is visible. 
while (true) {
  block myDialog // show the dialog now... 
  // if the dialog does hide/show or hide/realize now, then 
  // bDialogShown will be true, otherwise it will be false 
  // if the dialog has been hidden 
  if (!bDialogShown)  break
}
 
// You can read stuff from the dialog here. It might be necessary to not hide the 
// dialog, so you would only call release in the hide(...) function. 
 
destroy myDialog
")
 
ack "Finished Dialog!"



Hope this helps, regards, Mathias



 

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS

 

Thank you so much for the answer. You are a veteran in Dxl scripting. I want to set the compared module name in the comparison wizard but this does not work because
1. string comparedMod not identified inside eval_ function
2. Not able to set field 'oldModList'

I tried to get the oldModList value and this returns the compared module; which states I am referring to the correct DBE.

Module modCur = current
string comparedMod = "\\DOORS-8\\CompareModules\\CompMod"

if (null modCur) {
error "You need to have a current Module!"
halt
}

eval_("
DB myDialog = null;

bool bDialogShown = false

void realizeOld (DB x) { realize x }
void realize (DB x) {
bDialogShown = true
realizeOld x
}

void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x }

void hideOld (DB x) { hide x }
void hide (DB x) { release x; bDialogShown = false}

#include <standard/compwizard/compwiz.dxl>

set (filterOpt, false)
set (oldModList, comparedMod)
while (true) {
block myDialog
if (!bDialogShown) break
}

string comparedModName = get oldModList
print comparedModName
destroy myDialog
")
ack "Finished Dialog!"

Re: Run Comparison Wizard using DXL
Mathias Mamsch - Fri Sep 28 14:39:15 EDT 2012

DXLScripter - Fri Sep 28 05:48:04 EDT 2012
Thank you so much for the answer. You are a veteran in Dxl scripting. I want to set the compared module name in the comparison wizard but this does not work because
1. string comparedMod not identified inside eval_ function
2. Not able to set field 'oldModList'

I tried to get the oldModList value and this returns the compared module; which states I am referring to the correct DBE.

Module modCur = current
string comparedMod = "\\DOORS-8\\CompareModules\\CompMod"

if (null modCur) {
error "You need to have a current Module!"
halt
}

eval_("
DB myDialog = null;

bool bDialogShown = false

void realizeOld (DB x) { realize x }
void realize (DB x) {
bDialogShown = true
realizeOld x
}

void showOld (DB x) { show x }
void show (DB x) { myDialog = x; realize x }

void hideOld (DB x) { hide x }
void hide (DB x) { release x; bDialogShown = false}

#include <standard/compwizard/compwiz.dxl>

set (filterOpt, false)
set (oldModList, comparedMod)
while (true) {
block myDialog
if (!bDialogShown) break
}

string comparedModName = get oldModList
print comparedModName
destroy myDialog
")
ack "Finished Dialog!"

To set the older module name you need to use:
 

olderModName = \"abc\"

 


in your eval DXL code, since the Wizard will init the textBox from this variable. To make the string comparedMod that is declared outside the eval context available inside the eval context you can either put the statement

 

 

 

...
eval_ " 
...
// marshal compareMod to eval context ...
string comparedModInsideEval = addr_ " ((addr_ comparedMod) int) "
...
"



in the eval context or without using addr_



 

 

 

 

string escapeCompareMod = escapeString (compareMod)
 
eval_ " 
...
string compareMod = \"" escapeCompareMod "\"
...
"



where escapeString is a function that will escape your backslashes and other special characters of your string. Hope that helps, regards, Mathias



 

 

 


Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS